Many computer systems communicate using wireless network communications defined by the 802.11 family of specifications. Wireless communication under 802.11 may be made via either of two types of networking. One type of networking uses a conventional access point that operates as a base station to receive communications from one or more devices and forward the communications to another device, or to a network such as the Internet, local area network or both. Another type of networking is referred to as ad hoc networking, in which two wireless devices communicate with one another without the need for a separate access point. In this form of networking, each communicating computer handles the networking functions to allow the two computers to communicate.
To use wireless networking, the user of a computer system specifies an access point or a computer system to use for wireless communications and begins communicating with that access point or computer system. If an access point is specified that has access to a network such as the Internet, communication may be made via the network. In both cases, communications may continue for as long as desired, provided both devices remain in range to one another and the quality of the wireless communications is sufficient.
If the user does not know of an access point, the user may request that the user's computer system scan for an access point. The computer system may then scan for all access points across the various frequencies that access points use, listening for a beacon that some access points will periodically broadcast to advertise their presence. The beacon may include the name of the access point to use as a reference.
When the computer system is in an automobile, access point discovery and use is much more complex. There may be thousands of access points available along a route being traveled, though the user may not know of any of them. In some cases, by the time the user could scan for an access point, receive the names, select one and begin communicating using it, the automobile may have traveled out of range of the access point.
If the user of the network is an application program, the process can be automated to occur more rapidly so that there is at least a chance that an access point can be located and used before the access point is out of range. However, there are still problems with such an arrangement. The access point scanning and discovery process still takes time, and so by the time an access point is found, much of the time the access point is available can be consumed in the discovery process. Once an access point is discovered, it may not be appropriate for use by the application, for example, because the available bandwidth on the back end of the access point is too low, or the quality of the signal is too erratic to be useful, in spite of the fact that a different application, or the same application under different circumstances, may have been able to use that same access point. There may be multiple access points available at a given location, and determining which one is appropriate for the application by testing each of them just before use would again consume too much of the time the access point is available for use and may not identify issues such as reliability problems.
If the requirements of the application can be met using an ad-hoc network or an access point, it may be possible to try to scan for an ad hoc network to fulfill the request. However, if the automobile is on a residential road in a suburban environment, it may be unlikely that such a network can be located rapidly. In such an environment, if the application requires communication with either an access point or an ad hoc network, it would be desirable to start searching for an access point before searching for an ad hoc network connection.
What is needed is a system and method that can help avoid the discovery process when the need arises to communicate with an access point from a vehicle, thereby leaving more of the time for which a useful access point is available for the purpose desired by the application requesting it; can select the proper access point for the needs of an application; and can determine whether it can be more productive to start searching for an ad hoc network or access point.